#ifndef ALGORITHM_HPP
#define ALGORITHM_HPP

#include <vector>
#include <string>

enum Type{
DEFAULT,
BASIC_1, BASIC_2, BASIC_3,
COMPLEX_1, COMPLEX_2, COMPLEX_3,
SWARM_1, SWARM_2, SWARM_3,
GPU_1, GPU_2, GPU_3
};

class Algorithm{
  public :
  Algorithm();
  Algorithm(enum Type type);
  virtual ~Algorithm();
  protected :
  std::string name; // algorithm name
  unsigned int nb_socket; // number of sockets needed during attack
  unsigned int nb_cycle; // number of cycle for 1 attack
  unsigned int cpu_cost; // the CPU COST
  unsigned int nb_accelerator; // number of extra Accelerator card needed
  unsigned int memory_cost; // the RAM COST
  unsigned int corruption;
};

#endif
